﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using Terrae.Clases;
using Terrae.GUI.Contrato;
using Terrae.Logica.Comandos;
using Terrae.Logica.FabricaLogica;
using Terrae.Clases.FabricaClase;

namespace Terrae.GUI.Presentador
{
    public class PresentadorConsultarInvernadero
    {
        #region Atributos

        /// <summary>
        /// Instancia del IContratoConsultarVariablesI.
        /// </summary>
        private IContratoConsultarInvernadero _contrato;
        private Comando<List<Entidad>> _comando;
        private List<Entidad> _lInvernadero;
        private Entidad _invernadero; 

        #endregion Atributos

        #region Constructor

        public PresentadorConsultarInvernadero(IContratoConsultarInvernadero contrato)
        {
            _contrato = contrato;
        }

        #endregion Constructor

        #region Métodos

        #region Método que llena el GV

        /// <summary>
        /// Método que llena el GV con los Invernaderos.
        /// </summary>
        /// <param name="invernadero"></param>
        public void CargarTablaInvernadero(List<Entidad> invernadero)
        {
            DataTable tabla = new DataTable();
            tabla.Columns.Add("Id", typeof(string));
            tabla.Columns.Add("Nombre", typeof(string));

            //Se recorre la lista de Invernaderos.
            foreach (Entidad _in in invernadero)
            {
                tabla.Rows.Add((_in as Invernadero).Id, 
                    (_in as Invernadero).Nombre);
            }

            //Seteamos el gridview con el datatable de los invernaderos.
            _contrato.GVConsultarInvernadero1.DataSource = tabla;
            _contrato.GVConsultarInvernadero1.DataBind();
        }

        #endregion Método que llena el GV

        #region Cargar GV Invernadero

        /// <summary>
        /// Metodo que carga los invernaderos en el GridView.
        /// </summary>
        /// <param name="idProyecto"></param>
        /// <returns></returns>
        public List<Entidad> BuscarInvernaderos()
        {
            _invernadero = FabricaEntidad.NuevoInvernadero();
            (_invernadero as Invernadero).Persona =(Persona) FabricaEntidad.NuevaPersona();
            (_invernadero as Invernadero).Persona.Id = 
                ((Persona)_contrato.Sesion["Usuario"]).Id;
            _comando = FabricaComando.CrearComandoListarInvernaderos(_invernadero);
            _lInvernadero = _comando.Ejecutar();
            _contrato.Sesion["Invernadero"] = _lInvernadero;
            CargarTablaInvernadero(_lInvernadero);
            return _lInvernadero;
        }

        #endregion Cargar GV Invernadero

        #region Obtener Consulta del GV

        /// <summary>
        /// Método que recorre la lista y retorna todos los valores
        /// que contiene esa fila seleccionada.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="sessionC"></param>
        /// <returns></returns>
        public Invernadero VerDetalle(int id, object sessionC)
        {
            Entidad invernaderoP = FabricaEntidad.NuevoInvernadero();
            // Recorremos la lista de los Invernaderos
            foreach (Invernadero inv in ((List<Entidad>)sessionC))
            {
                // verificamos que el id del invernadero este en la lista.
                if ((inv as Invernadero).Id == id)
                {
                    invernaderoP = inv;
                }
            }
            return (invernaderoP as Invernadero);
        }

        #endregion Obtener Consulta del GV

        #endregion Métodos
    }
}